#!/usr/bin/python
# -*- coding: utf-8 -*-
# définit l'interface entre les plugins et le moteur'
class Plugin(object):
    def __init__(self):
        self._theContext = None
        self._theConfiguration = None

    def Init(self,theContext,theConfiguration):
        self._theContext = theContext
        self._theConfiguration = theConfiguration
        if ( self._theContext != None):
            self._theContext._theLogger.Debug("Plugin.Init appelé")
    
    # calcule la liste des choses à faire et renvoie un tuple contenant
    # le Nombre d'images
    # une liste d'objets à recevoir plus tard
    def ComputeSteps(self):
        if ( self._theContext != None):
            self._theContext._theLogger.Debug("Plugin.ComputeSteps appelé")
            
        return ()
    
    # Donne une chance au plugin de se préparer à l'éxéction
    def Start(self):
        if ( self._theContext != None):
            self._theContext._theLogger.Debug("Plugin.Start appelé")
    
    # Reçoit un élément de la liste calculée dans ComputeSteps et l'exécute
    def ExecuteStep(self,stepData):
        if ( self._theContext != None):
            self._theContext._theLogger.Debug("Plugin.ExecuteStep appelé")
    
    # Est appelé après la boucle
    def End(self):
        if ( self._theContext != None):
            self._theContext._theLogger.Debug("Plugin.End appelé")
   
    # Est appelé après la boucle et permet de nettoyer les traces du plugin dans le contexte
    def CleanUpContext(self):
        if ( self._theContext != None):
            self._theContext._theLogger.Debug("Plugin.CleanUpContext appelé")
    
        
        
    